package file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Divisione {
	public Divisione () {}
	public void effettua (String percorsoFileSorgente, int numeroMassimoConnessioni) throws IOException {
		File source = new File(percorsoFileSorgente);
		FileInputStream fis = new FileInputStream(source);
		
		int i = 0;
		int bufSize = 1024;
		long lunghezza = source.length();
		int chunks = (int) ((lunghezza/(numeroMassimoConnessioni * bufSize)) + 1);

		System.out.println("----------- Frammentazione File -----------");
		System.out.println("Chunks: " + chunks);
		
		byte[] b = new byte[bufSize];
		
		System.out.println("Il file e' lungo: " + lunghezza);
		
		while (lunghezza > 0) {
		    FileOutputStream fos = new FileOutputStream(percorsoFileSorgente+"."+Integer.toString(i)); 
		    int size = 0;
		    while ((chunks > size) && ((fis.read(b,0,bufSize)) != -1)) {
		        fos.write(b,0,bufSize); 
		        size++; 
		    }
		    lunghezza -= chunks*bufSize; 
		    fos.close(); 
		    i++;
		}
		fis.close();

		System.out.println("Divisione terminata");
		System.out.println("File diviso in " + i + " pezzi");
		System.out.println("-------------------------------------------");
	}
}
